Method And Apparatus To Enhance Routing Protocols In Wireless Mesh Networks

ABSTRACT

A protocol for use in wireless mesh networks (PlayNCool) uses helper nodes to improve data flow in the network. The protocol is compatible with traditional mesh network routing algorithms. Techniques, systems, devices, and circuits for implementing the protocol are described.

FIELD

The subject matter described herein relates generally to wirelesscommunication and more particularly to techniques, systems, andprotocols for enhancing routing strategies in wireless mesh networks.

BACKGROUND

Traditional routing protocols in wireless mesh networks often use asingle route to deliver packets from a source node to a destinationnode. FIG. 1A is a diagram of an exemplary wireless mesh network 10 thatillustrates a traditional routing approach. As shown in FIG. 1A, a routeis established from a source node (S) 12 to a destination node (D) 14via a single path through first and second relay nodes (R₁ and R₂) 16,18(see, e.g., “DSR: The Dynamic Source Routing Protocol for Multi-HopWireless Ad Hoc Networks,” by Johnson et al., Ad Hoc Networking, Ed. C.E. Perkins Addison-Wesley, 2001, pp. 139-172; “Ad-Hoc On-Demand DistanceVector Routing,” by Perkins et al., Proceedings of the 2nd IEEE Workshopon Mobile Computing Systems and Applications, 1997, pp. 90-100; and“Better Approach to Mobile Ad-Hoc Networking” by Neumann et al., IETFInternet Draft). The route is established by finding the best next hopfor a newly arrived packet based on different criteria (e.g., number ofhops, delay, etc.). More recently, multi-path routing protocols havebeen developed for wireless networks that rely on sharing the loadbetween different paths (see, e.g., “An Optimized Ad-Hoc On-DemandMultipath Distance Vector (AOMDV) Routing Protocol,” by Yuan et al.,Asia-Pacific Conf on Communications, 2005). These routing approaches aresimilar to routing protocols used in wired networks and do not exploitthe broadcast nature of the wireless medium. That is, the broadcastnature of the wireless medium enables the nodes to “overhear” packetstransmitted to other nodes.

In contrast to traditional routing protocols in wireless networks, theExOR protocol is an integrated routing and MAC technique that utilizesthe cooperation between nodes using the broadcast nature of the wirelessmedium (see, e.g., “ExOR: Opportunistic Multi-Hop Routing for WirelessNetworks,” by Biswas et al., SIGCOMM, 2005). In the ExOR protocol, thenodes in the network need to coordinate their actions to avoidtransmitting duplicate packets. In order to decrease the coordinationoverhead between nodes, various protocols have exploited random linearnetwork coding (RLNC) (see, e.g., “MORE: A Network Coding Approach toOpportunistic Routing,” by Chachulski et al., SIGCOMM, 2007; “CCACK:Efficient Network Coding Based Opportunistic Routing Through CumulativeCoded Acknowledgments,” by Koutsonikolas et al., IEEE INFOCOM, 2010;“GeoCode: A Geo-graphic Coding-Aware Communication Protocol,” byKhamfroush et al., International IEEE Conf. on Intel. Transp. Sys.(ITSC), 2011; and others). RLNC is a coding technique that allows asender to transmit random linear combinations of a group of originalpackets (see, e.g., “A Random Linear Network Coding Approach toMulticast,” by Ho et al., IEEE Trans. on Inf. Theory, vol. 52, no. 10,2006).

The MORE protocol is an opportunistic routing protocol that implementsRLNC. Each relay will store coded packets for an active generation andre-code before sending (i.e., the relay will create new linearcombinations based on the contents of its buffer of coded packets).Although MORE is interesting, its impact on commercial systems may takea while to realize because it lacks compatibility with standard routingprotocols and because it relies on an offline calculation of the errorprobability of each link. The GeoCode protocol creates multiple paths bychoosing nodes that are located inside a specified geographic area(e.g., an ellipse) as relay nodes. The created paths may intersect eachother at intermediate nodes which use network coding to maximize thethroughput. The CCACK protocol uses a Cumulative Coded acknowledgementapproach to acknowledge network coded flow to upstream nodes, where theacknowledgement feedback is resilient to packet losses. None of theseprotocols work well with traditional routing protocols.

There is a need for techniques, systems, and protocols that arecompatible with traditional routing protocols and that are capable oftaking advantage of the broadcast nature of wireless networks to improveoverall performance of a network.

SUMMARY

The present disclosure relates to a locally optimized network codingprotocol named PlayNCool, and associated techniques, circuits, andsystems, that may be used in wireless mesh networks. The PlayNCoolprotocol is easy to implement and is compatible with existing routingprotocols and devices. In addition, the PlayNCool protocol allows thebroadcast nature of the wireless medium to be taken advantage of byallowing transmission overhearing to be actively managed. By managingoverhearing, increases in both reliability and throughput can beachieved. The protocol allows a system to gain from software implementednetwork coding capabilities without the need for new hardware. PlayNCoolcan enhance network performance by: (i) choosing one or more localhelpers between nodes in a path to strengthen the quality of each link,(ii) using local information to decide when and how many transmissionsto allow from each helper, and (iii) using random linear network codingto increase the usefulness of each transmission from the helper(s).Tests have shown that the PlayNCool protocol is capable of increasingend-to-end throughput in a network up to four-fold over priortechniques.

Many new network coding based wireless protocols have made significantchanges to prior protocols that are not compatible with traditionalrouting protocols. PlayNCool, on the other hand, was designed for usewith traditional routing protocols. For this reason, it is believed thatPlayNCool can have a significant impact (at least in the short term) byproviding enhanced performance in networks using existing routingprotocols in an easily implementable way. To achieve compatibility,PlayNCool chooses one or more local helpers between nodes in a networkpath in order to strengthen the quality of each individual link in thatpath. One feature of PlayNCool that contributes to its success is itsability to have a helper node wait for a period of time (i.e., play itcool) until the node has accumulated a sufficient number of receivedpackets before beginning to transmit.

Another distinctive feature of PlayNCool is that it is aware ofcompetition from other nodes. For example, when a network becomescongested due to other flows, the PlayNCool protocol can activate ahelper node sooner, rather than later, to increase the priority of thecurrent flow. PlayNCool may rely on local knowledge of channelconditions to determine when and how much to transmit. In someimplementations, PlayNCool may use link quality information provided byone or more routing protocols (e.g., B.A.T.M.A.N., etc.) to make thesedeterminations. Alternatively, or in addition, PlayNCool may include alink quality discovery function to estimate channel quality information.For example, a function may be provided by which channel quality isestimated locally based on transmitted and received packets.

In accordance with one aspect of the concepts, systems, circuits, andtechniques described herein, a machine implemented method for use in awireless mesh network comprises: acquiring data packets at a source nodethat need to be delivered to a remote destination node through thewireless mesh network; determining a unicast route through the wirelessmesh network from the source node to the destination node to support adata flow for the acquired data packets; for a link between the sourcenode and a first relay node in the unicast route, activating a helpernode to assist the link in transferring data from the source node to thefirst relay node; generating random linear network coded (RLNC) packetsat the source node for a first generation of the data flow; initiatingtransmission of RLNC packets from the source node to the first relaynode for the first generation; overhearing and storing RLNC packetstransmitted by the source node for the first generation at the helpernode; re-coding overheard RLNC packets at the helper node for the firstgeneration; after a delay, initiating transmission of re-coded RLNCpackets from the helper node to the first relay node for the firstgeneration of the data flow; and continuing to transmit RLNC packetsfrom at least one of the source node and the helper node until the firstrelay node has received a sufficient number of degrees-of-freedom (DOFs)to decode the first generation of data packets.

In one embodiment, the method further comprises repeating generating,initiating transmission of RLNC packets, overhearing and storing,re-coding, initiating transmission of re-coded RLNC packets, andcontinuing for each subsequent generation of packets after the firstgeneration.

In one embodiment, the method further comprises: (i) for a second linkbetween the first relay node and a second relay node in the unicastroute, activating a second helper node to assist the second link intransferring data from the first relay node to the second relay node;(ii) generating re-coded RLNC packets at the first relay node for thefirst generation; (iii) initiating transmission of re-coded RLNC packetsfrom the first relay node to the second relay node for the firstgeneration; (iv) overhearing and storing RLNC packets transmitted by thefirst relay node for the first generation at the second helper node; (v)re-coding overheard RLNC packets at the second helper node for the firstgeneration; (vi) after a second delay, initiating transmission ofre-coded RLNC packets from the second helper node to the second relaynode for the first generation; and (vii) continuing to transmit RLNCpackets from at least one of the first relay node and the second helpernode until the second relay node has received a sufficient number ofdegrees-of-freedom (DOFs) to decode the first generation of datapackets.

In one embodiment, generating re-coded RLNC packets at the first relaynode for the first generation includes using a variable parameter tocontrol timing of re-coding operations in the first relay node.

In one embodiment, the method further comprises calculating the delay ofthe helper node based, at least in part, on channel conditions in thewireless mesh network and/or other active users or nodes in the wirelessmesh network.

In one embodiment, the delay of the helper node is expressed as a numberof RLNC packets that the helper node has to overhear from the sourcenode before initiating transmission of re-coded RLNC packets.

In one embodiment, the method further comprises estimating, at thesource node, a number of RLNC packets that will need to be transmittedfrom the source node for the first generation, wherein generating RLNCpackets includes generating the estimated number of packets.

In one embodiment, the method further comprises estimating a number ofre-coded packets that will be transmitted from the helper node for thefirst generation.

In one embodiment, the method further comprises transmitting an ACKmessage from the first relay node after the first relay node hasreceived a sufficient number of degrees-of-freedom (DOFs) to decode thefirst generation of data packets, wherein at least one of the sourcenode and the helper node will cease to transmit RLNC packets for thefirst generation in response to the ACK message.

In one embodiment, re-coding overheard RLNC packets at the helper nodefor the first generation includes using a variable parameter to controltiming of re-coding operations in the helper node.

In one embodiment, the method further comprises, at a helper nodeassociated with one link in the unicast route, overhearing and storingpackets transmitted by a helper node associated with another, differentlink in the unicast route.

In accordance with another aspect of the concepts, systems, circuits,and techniques described herein, a machine implemented method for use ina wireless mesh network comprises: (i) acquiring a group of data packetsat a first wireless node for transmission to a second wireless node viaa direct wireless link; (ii) activating a helper node to assist intransmission of data from the first wireless node to the second wirelessnode; (iii) generating random linear network coded (RLNC) packets at thefirst wireless node by linearly combining the group of data packets;(iv) initiating transmission of the RLNC packets from the first wirelessnode to the second wireless node through the direct wireless link; (v)overhearing and storing RLNC packets transmitted by the first wirelessnode at the helper node; (vi) re-coding RLNC packets stored within thehelper node to generate re-coded RLNC packets; (vii) after a delay,initiating transmission of re-coded RLNC packets from the helper node tothe second wireless node; and (viii) continuing to transmit RLNC packetsfrom at least one of the first wireless node and the helper node untilthe second wireless node has received a sufficient number ofdegrees-of-freedom (DOFs) to decode the group of data packets.

In one embodiment, activating a helper node includes activating thehelper node automatically from the helper node based on channelconditions within the network and/or other active users or nodes in thenetwork.

In one embodiment, activating a helper node includes determining at thefirst wireless node that a helper node is needed and sending a requestto another node in the wireless mesh network requesting that the othernode serve as a helper node for the link between the first wireless nodeand the second wireless node.

In one embodiment, the method further comprises calculating the delay ofthe helper node based, at least in part, on channel conditions in thewireless mesh network.

In one embodiment, calculating the delay of the helper node is performedat either the first wireless node or the helper node.

In one embodiment, the delay of the helper node is expressed as a numberof RLNC packets that the helper node has to overhear from the sourcenode before transmission of re-coded RLNC packets is initiated.

In one embodiment, the method further comprises transmitting an ACKmessage from the second wireless node after the second wireless node hasreceived a sufficient number of degrees-of-freedom (DOFs) to decode thegroup of data packets, wherein at least one of the first wireless nodeand the helper node will cease to transmit RLNC packets associated withthe group of data packets in response to the ACK message.

In one embodiment, activating a helper node to assist in transmission ofdata from the first wireless node to the second wireless node includesactivating a first helper node; and the method further comprisesactivating at least one additional helper node to assist in transmissionof data from the first wireless node to the second wireless node.

In one embodiment, the at least one additional helper node includes asecondary helper node that is configured to overhear and store RLNCpackets transmitted by the first helper node.

In one embodiment, the group of data packets is representative of asingle generation of a unicast data transfer between a source node and adestination node via a route that includes the first and second wirelessnodes.

In one embodiment, the group of data packets includes RLNC packets andgenerating RLNC packets at the first wireless node includes re-codingRLNC packets in the group of data packets.

In accordance with still another aspect of the concepts, systems,circuits, and techniques described herein, a machine implemented methodfor use in a wireless mesh network comprises: (i) acquiring a group ofdata packets at a first wireless node for transmission to a secondwireless node via a direct wireless link; (ii) activating a helper nodeto assist in transmission of data from the first wireless node to thesecond wireless node by sending a request message from the firstwireless node; (iii) generating random linear network coded (RLNC)packets at the first wireless node by linearly combining the group ofdata packets; (iv) initiating transmission of the RLNC packets from thefirst wireless node to the second wireless node; (v) calculating a delayindication for the helper node that sets a delay that the helper nodewill have to wait before transmitting re-coded versions of RLNC packetsoverheard from the first wireless node, wherein the delay indication iscalculated based, at least in part, on channel conditions in thenetwork; and (vi) transmitting the delay indication to the helper node.

In one embodiment, the method further comprises estimating, at the firstwireless node, a number of RLNC packets that will be transmitted fromthe source node for the group of data packets, wherein the number ofRLNC packets is estimated based, at least in part, on channel conditionsin the network.

In one embodiment, the method further comprises estimating, at the firstwireless node, a number of re-coded packets that will be transmittedfrom the helper node for the group of data packets, wherein the numberof re-coded packets is estimated based, at least in part, on channelconditions in the network.

In accordance with a further aspect of the concepts, systems, circuits,and techniques described herein, a wireless node device comprises: (i) awireless transceiver to support wireless communication with one or moreother nodes in a wireless mesh network; (ii) helper node circuitry todetermine whether the wireless node device is to serve as a helper nodefor a direct wireless link between a transmitting node and a receivingnode in the network, wherein the transmitting node and the receivingnode are both part of a common unicast route in the network; (iii)monitoring circuitry to overhear and store network coded packetstransmitted by the transmitting node if the wireless node device isacting as the helper node; (iv) re-coding circuitry to re-code thestored network coded packets if the wireless node is acting as thehelper node; and (v) delay circuitry to initiate transmission of there-coded packets a finite amount of time after a first network codedpacket is overheard by the monitoring circuitry if the wireless node isacting as the helper node.

In one embodiment, the finite amount of time is based, at least in part,on channel conditions in the network and/or active neighbor nodes in thenetwork.

In one embodiment, the delay circuitry is configured to initiatetransmission of re-coded packets after p network coded packets have beenoverheard by the monitoring circuitry, wherein p is based, at least inpart, upon channel conditions in the network and/or active neighbornodes in the network.

In one embodiment, the helper node circuitry is configured to receiveand respond to a request from the transmitting node to serve as a helpernode.

In one embodiment, the helper node circuitry is configured to monitorchannel conditions in a vicinity of the wireless node device andautonomously determine whether to serve as a helper node for a nearbywireless link.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing features may be more fully understood from the followingdescription of the drawings in which:

FIG. 1A is a diagram illustrating a traditional routing approach withina wireless mesh network;

FIG. 1B is a diagram illustrating operation of the PlayNCool protocolalongside a traditional routing approach within a wireless mesh networkin accordance with an embodiment;

FIG. 2 is a diagram illustrating a portion of a protocol stack having aPlayNCool layer inserted between an IP layer and a MAC layer inaccordance with an embodiment;

FIG. 3 is a diagram illustrating a basic topology that may be used in awireless network implementing the PlayNCool protocol in accordance withan embodiment;

FIGS. 4A, 4B, and 4C are diagrams illustrating exemplary communicationexchanges between nodes under the PlayNCool protocol for various valuesof p in accordance with an embodiment;

FIG. 5 is a diagram illustrating an exemplary packet structure that maybe used in a network implementing the PlayNCool protocol in accordancewith an embodiment;

FIG. 6 is a diagram illustrating an exemplary packet structure that maybe used in a network implementing the PlayNCool protocol in accordancewith an embodiment;

FIG. 7 is a diagram illustrating a network grid of 25 nodes that wasused to evaluate various performance aspects of the PlayNCool protocolin accordance with an embodiment;

FIG. 8 is a plot illustrating gain (i.e., improvement in completiontime) as a function of channel error probabilities in accordance with anembodiment;

FIG. 9 is a plot illustrating gain as a function of load for thePlayNCool protocol in accordance with an embodiment;

FIG. 10 is a plot illustrating gain as a function of channel errorprobability and load for the PlayNCool protocol in accordance with anembodiment;

FIG. 11 is a block diagram illustrating an exemplary node architecturethat may be used in a node of a network that incorporates features ofthe present disclosure; and

FIGS. 12A and 12B are portions of a flow diagram illustrating a processfor use in transferring data from a source node to a destination node ina wireless mesh network in accordance with an embodiment.

DETAILED DESCRIPTION

The PlayNCool protocol uses network coding to encode packets fortransmission within the network. More specifically, the protocol makesuse of a form of network coding known as Random Linear Network Coding(RLNC). In RLNC, linear combinations of data packets are generated usingrandom (or pseudorandom) coefficients. These linear combinations ofpackets may be referred to herein as coded packets, RLNC encodedpackets, or simply RLNC packets. The random coefficients used togenerate the linear combination are typically appended to thecorresponding coded packets for eventual use in decoding (although othertechniques for communicating the coefficients to subsequent nodes mayalternatively be used).

In an RLNC enabled network, a generation parameter (g) may be definedfor a flow to designate a number of original packets that will becombined together in each coded packet in the flow. Coded packets maythen be transmitted to a destination node in “generations.” In eachgeneration, coded packets may be transmitted to the destination nodeuntil the destination node has acquired enough coded packets to be ableto decode (or extract) the original packets. The decoding process willtypically involve the solution of a linear system of equations. Eachlinearly independent coded packet received by a destination node willprovide additional information for use in solving the linear system ofequations. Thus, each linearly independent coded packet is oftenreferred to as a “degree of freedom” or DOF in the network codingindustry. A destination device must thus successfully receive asufficient number of DOFs to be able to decode the original data packetsof the present generation. For a particular flow, a parameter P_(i)^((k)) may be defined as the i^(th) data packet of flow k. The linearcombinations of the flow may then be defined as:

$C_{i}^{(k)} = {\sum\limits_{j = 1}^{g_{k}}\; {a_{ij}^{(k)}P_{j}^{(k)}}}$

where C_(i) ^((k)) may be referred to as the i^(th) “coded packet” orRLNC packet of flow k, g_(k) is the generation size of flow k, andα_(ij) ^((k)) represent the randomly generated coefficients.

In some implementations, the PlayNCool protocol may be implemented as anew layer of a network protocol stack. For example, FIG. 2 is a diagramillustrating a portion of a protocol stack 40 having a PlayNCool layer20 inserted between an IP layer 42 and a MAC layer 46 of the stack. Asshown in FIG. 2, network coded packets may flow between the MAC layer 46and the PlayNCool layer 44 of the stack in both directions. Within relaynodes of the network, coded packets may flow from the IP layer 42 to thePlayNCool layer 44. In a source node, uncoded packets flow between theMAC layer 46 and the PlayNCool layer 44. In a similar fashion, in relaynodes, coded packets flow from the PlayNCool layer 44 to the IP layer42. In a destination node, decoded packets flow in this direction. Itshould be appreciated that the stack arrangement of FIG. 2 is merely anexample of one possible configuration that may be used in animplementation. Alternative approaches also exist.

FIG. 3 is a network diagram illustrating a basic node topology 50 thatmay be used in a network implementing PlayNCool. As shown, the nodetopology 50 includes two relay nodes 52, 54 and a helper node 56. Thei^(th) relay node (R_(i)) 52 sends coded packets to the (i+1)^(th) relaynode (R_(i+1)) 54 via link 58. The helper node (H_(i+1)) 56 overhearsthe coded packets transmitted by the i^(th) relay node (R_(i)) 52.Although not shown, for an n-hop network, the source node may bedesignated R₀ and the destination node may be designated R_(n). Eachinter-node link in the topology 50 may have a corresponding errorprobability that is indicative of the quality of the link. As shown inthe FIG. 3, the error probabilities in the links between R_(i) andH_(i+1), H_(i+1) and R_(i+1), and R_(i) and R_(i+1) may be representedby e₁ ^((i+1)), e₂ ^((i+1)), and e₃ ^((i+1)), respectively. The errorprobabilities are assumed to be available in the network for R_(i) andR_(i+1).

FIG. 1B is a diagram illustrating an exemplary wireless mesh network 20in accordance with an embodiment. The network 20 demonstrates possibleoperation of the PlayNCool protocol. As shown, the network 20 includes anumber of successive instances of the node topology 50 of FIG. 3. Aroute is established in the network 20 from a source node (S) 22 to adestination node (D) 28 via a single path through first and second relaynodes (R₁ and R₂) 24, 26 (as in FIG. 1A). However, as will be describedin greater detail, helper nodes 30, 32, 34, 36, 38 are defined in thenetwork 20 and may be used to facilitate data delivery therein. Thenetwork layer of the source node 22 in FIG. 1B delivers uncoded packetsto the PlayNCool layer. The PlayNCool layer then divides the uncodedpackets into batches of g packets (where g is the generation size). Foreach generation, the source node 22 generates coded packets using randomlinear network coding (RLNC) and stores the coded packets in the MAClayer queue for transmission. Once the coded packets are buffered fortransmission in the MAC queue, they cannot be removed from the queue.This is because the PlayNCool protocol was designed to be independentfrom the upper and the lower protocol layers.

It should be appreciated that the source node does not need to acquireall of the uncoded packets to be delivered to the destination node atthe same time. That is, the uncoded packets may be acquired over aperiod of time in some implementations. Using this approach, the uncodedpackets may be divided into generations as they are acquired and codedpackets may be generated for the various generations over time.

The source node 22 transmits the coded packets buffered in the MAC queuefor a first generation to the first relay node 24. It should beappreciated that, in some implementations, the source node does not haveto wait until all packets in a particular generation are accumulated tobegin transmission for the generation. That is, transmission maycommence before all packets are accumulated for the generation. Thesource node 22 can choose a helper node (e.g., helper node 30) toincrease the reliability of its link to the relay 24. To choose aparticular node as a helper node, the source node 22 can send a requestto the node. In an alternative (or additional) approach, a nearby nodecan auto-activate as a helper node when the link quality between sourcenode 22 and the first relay 24 is low (e.g., below a threshold value,etc.).

The first helper node (H₁) 30 of FIG. 1B overhears transmissions of thesource node 22 and stores the corresponding coded packets in a buffer.When the first helper node 30 accumulates a specific number of codedpackets (typically a number less than g), it may begin to generate newcoded packets by re-coding the recorded coded packets. That is, thehelper node 30 may create new linear combinations of the buffered codedpackets and transmit them to the intended relay 24. At this point, boththe source node 22 and/or the helper node 30 may continue to transmitcoded packets to the relay 24 until the relay 24 signals that it hasacquired enough degrees of freedom to decode all g packets. In responseto this feedback, the source node 22 may stop transmitting the currentgeneration and start transmitting a new generation. As will be describedin greater detail, in some embodiments, each helper node may control thenumber of coded packets that are generated based on a “Budget” metric.The relay node 24 may start to re-code and generate new coded packetsupon reception of packets from the source node 22 and the helper node30. The relay node 24 may then transmit the new coded packets to thenext relay 26 and the process repeats for this link.

As described above, the source node 22 and/or the helper node 30 maycontinue to transmit coded packets to the first relay 24 until the relay24 indicates (e.g., sends feedback) that enough DOFs have been received.It should be appreciated that the source node 22 and the helper node 30do not necessarily stop transmitting at the same time. That is,depending on the circumstances or the implementation, either one of thetwo nodes may stop transmitting before the other. For example, in onescenario, the source node 22 may stop transmitting after a particulartime and allow the helper node to complete the generation. In anotherscenario, the helper may transmit re-coded packets a certain number oftimes and then allow the source node to complete the generation.

Before transmitting, the source node 22 may estimate the number of codedpackets that need to be transmitted on the link to the first relay 24.The estimation may be based on a heuristic mean value analysis of theDOFs delivered, considering the loss probabilities of the links. Anotherparameter that can be determined at this point is the number of packets(p) that the helper node 30 overhears before it starts transmittingcoded packets. The value of p will determine how many coded packets thesource node 22 and the helper node 30 need to send. The value of p willalso determine the performance of the scheme. The value of p should belarge enough to guarantee that the helper transmissions are “innovative”for the relay with high probability. A coded packet is consideredinnovative when its coefficient vector is linearly independent of thecoefficient vector of the coded packets that the node has alreadyreceived from that generation (i.e., they provided a new DOF). If p istoo small, the helper node starts transmitting too early and the relaynode will receive linearly dependent packets. Therefore, some of theearly transmissions may be wasted. If p is too large, the helper nodestarts transmitting too late, which means the relay may have receivedmost of the DOFs from the source node and the usefulness of the helpernode is limited.

For the link between the first relay node 24 and the second relay node26, the above described process may repeat. That is, a helper node 32may be activated and the helper node 32 and/or the first relay node 24may transmit re-coded packets until the second relay node 26 hasreceived a sufficient number of packets to decode. This process may thenrepeat for each successive link in the route until the currentgeneration has been successfully received in the destination node 28.The same process may then be repeated for each successive generationuntil all generations have been received at the destination node 28.

As shown in FIG. 1B, in some implementations, multiple (i.e., two ormore) helpers may be activated to assist a single link between nodes.For example, a second helper 38 may be activated to assist the linkbetween the first helper 30 and the first relay node 24 (thus furtherassisting the link between the source node 22 and the first relay node24). In this scenario, the second helper 38 may overhear and storepackets transmitted by the first helper node 30 to perform its function.In some embodiments, the first helper node 30 may be configured todetermine that additional help is required and send a request to anothernode (e.g., helper 38) to serve as a secondary helper. In otherembodiments, the second helper 38 may auto-activate or be activated byrequest from the source node 22.

In another example shown in FIG. 1B, two (or more) helper nodes 34, 36may be activated to assist the link between the second relay node 26 andthe destination node 28. These helper nodes 34, 36 may assist thecorresponding link independent of one another (i.e., they both overhearpackets transmitted by the second relay node 26). Based on channelconditions and/or other factors, the delays used by the two helper nodes34, 36 may be different from one another in some implementations.

In addition, in some implementations, helper nodes associated with onelink may opportunistically overhear and store packets transmitted byhelper nodes associated with a different link. For example, as shown inFIG. 1B, helper node 34 associated with the link between the secondrelay node 26 and destination node 28 may overhear packets transmittedby helper node 32 associated with the link between first relay node 24and second relay node 26. Helper node 34 may then use this overhearddata to begin to transmit re-coded packets to destination node 28earlier than would have been possible if it had not overheard the data(i.e., a shorter delay may be used).

FIGS. 4 a, 4 b, and 4 c are diagrams illustrating communicationsexchanges between nodes under PlayNCool for various values of p. In theexample of FIG. 4 a, p=2 is used. As a result, only 10 transmissions areneeded to complete a generation (i.e., 6 from the first relay and 4 fromthe helper). In the example of FIG. 4 b, p=1 is used and 14transmissions are needed to complete a generation (i.e., 7 from thefirst relay and 7 from the helper). It should be noted from FIG. 4 bthat relay R_(i+1) receives two non-innovative coded packets from helperH_(i+1) in this example. In the example of FIG. 4 c, p=3 is used. Inthis case, the total number of transmissions is 12 (i.e., 8 from thefirst relay and 4 from the helper). Thus, the best value of p in thisscenario is 2.

The total number of transmitted packets from the source is equal to thenumber of transmissions before the helper is activated (r) plus thenumber of transmissions after the helper is activated (k). Byconsidering the error probability between the source and the helper, pis given as:

p=(1−e ₁ ^((i+1)))·r  (1)

In the analysis, it was assumed that the MAC layer shares the channelequally between the nodes, which is a valid assumption for CSMA/CA.Based on this assumption, the helper and the source transmit k codedpackets after the helper is activated. It was also assumed that thefield size of RLNC is large enough so that the probability of receivinglinearly dependent coded packets is low. In order to determine p, aswell as the number of transmissions from the source and helper nodes,the following mean flow analysis may be used. It is assumed that therelay node should receive g innovative coded packets in total from thehelper and the source to decode a generation. Thus:

g=r·(1−e ₃ ^((i+1)))+k·(1−e ₂ ^((i+1)))+k·(1−e ₃ ^((i+1))).  (2)

The value of r is calculated for two cases. In the first case, thenumber of incoming innovative packets to the helper is higher than thenumber of outgoing packets from the helper (i.e., (1−e₁ ^((i+1)))·e₃^((i+1))>1−e₂ ^((i+1))). Thus, the helper starts to transmit uponreceiving the first innovative packet. The number of transmissions untilthe helper receives an innovative packet is

${r_{a} = \frac{1}{\left( {1 - e_{1}^{({i + 1})}} \right) \cdot e_{3}^{({i + 1})}}},$

which means that

$p = {\frac{1}{e_{3}^{({i + 1})}}.}$

In the second case, (1−e₁ ^((i+1)))·e₃ ^((i+1))≦1−e₂ ^((i+1)).Considering that the number of incoming innovative packets in the helpershould be equal to the number of outgoing innovative packets from thehelper results in:

r _(b)·(1−e ₁ ^((i+1)))·e ₃ ^((i+1)) +k·(1−e ₁ ^((i+1)))·e ₃ ^((i+1))=k·(1−e ₂ ^((i+1))),  (3)

Combining Eq. (2) and Eq. (3), gives:

$r_{b} = {{- g} \cdot {\frac{L\left( {e_{1}^{({i + 1})},e_{2}^{({i + 1})},e_{3}^{({i + 1})}} \right)}{G\left( {e_{1}^{({i + 1})},e_{2}^{({i + 1})},e_{3}^{({i + 1})}} \right)}.}}$

where L(a, b, c)=−1+b+c−a·c and G(a, b, c)=(2−c−b)·(c−a·c)−(1−c)·L(a, b,c). The number of coded packets that need to be transmitted on the linkfrom the source is:

$\begin{matrix}{{B_{s}(r)} = {\frac{g + {\left( {1 - e_{2}^{({i + 1})}} \right) \cdot r}}{2 - e_{3}^{({i + 1})} - e_{2}^{({i + 1})}}.}} & (4)\end{matrix}$

where r is r_(a) and r_(b) for cases 1 and 2, respectively. Thus, insome implementations, Equation 4 may be used to determine the number ofRLNC packets that are generated by the source node and placed in the MAClayer.

As described above, the source node estimates the number of codedpackets that need to be transmitted. However, because of randomness inthe channel and the dynamic characteristics of wireless networks, thisestimate (which is based on mean performance) does not guarantee that asufficient number coded packets will be generated. PlayNCool implementstwo alternative approaches to deal with this problem. As describedbelow, the first approach involves monitoring the transmission queue andthe second approach involves estimating the completion time.

In the first approach, a queue monitoring mechanism monitors thetransmission queue to guarantee that there is enough packets in thetransmission queue to transmit. When the number of coded packets in thequeue is less than a certain threshold (e.g., 10 coded packets) and thesource has not received an acknowledgement (ACK) packet, the source nodegenerates extra coded packets for the generation (e.g., 10% extra). Inthe second approach, an expected timeout value is provided for eachtransmitted generation that allows the source node to send additionalcoded packets if no ACK is received after a predetermined time. If thetransmission time of a packet is t, the timeout of a generation may beestimated as, for example, t·(r+k). If the timeout of a generation haselapsed and the source node has not received an ACK, the source node cangenerate and transmit 10% additional coded packets for that generation.A new timeout may be set for the additional coded packets. This processmay then be repeated until an ACK is received. As described previously,upon receiving an ACK for a current generation, the source node may stoptransmitting the current generation and start transmitting a nextgeneration.

As discussed above, a helper node may start transmitting when it hasaccumulated p coded packets. The helper node may transmit k codedpackets when it is activated. Based on Equation 2 above, the value of kmay be calculated as follows:

$\begin{matrix}{{k(r)} = {\frac{g - {r \cdot \left( {1 - e_{3}^{({i + 1})}} \right)}}{2 - e_{3}^{({i + 1})} - e_{2}^{({i + 1})}}.}} & (5)\end{matrix}$

where r may be calculated for the different cases discussed above (r_(a)and r_(b)). The helper node should not generate all k coded packets atthe same time. This will increase the number of non-innovativetransmissions because the helper should not generate much more than itknows (e.g., it should not generate 50 coded packets if it has receivedonly one coded packet). In some implementations, a helper node H_(i+1)may control the number of coded packets that are generated by a metriccalled “budget.” Budget (B_(h)(t+1)) may be defined as the number ofcoded packets that a helper node can generate at time t+1:

B _(h)(t+1)=B _(h)(t)+C _(h) ^((i+1)) −N _(h) ^((i+1))(t)  (6)

where the credit C_(h) ^((i+1)) is the number of generated coded packetsin the helper H_(i+1) per a new incoming coded packet and N_(h)^((i+1))(t) is the number of transmitted packets at time t. N_(h)(t) canbe increased until B_(h)(t+1)ε[0,1).

Referring back to FIG. 3, when the source node transmits w codedpackets, the helper node is expected to receive y=w·(1−e₁ ^((i+1)))coded packets. Consequently, when the helper receives one coded packet(y=1) from the source, it increases its budget by a credit value equalto:

C _(h) ^((i+1))=(1−e ₁ ^((i+1)))⁻¹  (7)

When the budget is greater than one, the helper node generates are-coded packet and decreases the budget by one. Then, it puts there-coded packet in the transmission queue. When the budget reaches zero,the helper node stops generating packets until the budget is againincreased. The helper node may finish transmitting coded packets wheneither (a) it has received an ACK packet from the relay or (b) when ithas finished generating all k coded packets.

Similar to the helper node, a relay node should not transmit much morethan it knows, to avoid non-innovative packet transmissions. A relaynode can control the number of generated packets using a relay budget(B_(r) (t+1)) calculated as follows:

B _(r)(t+1)=B _(r)(t)+C _(r) ^((i+1)) −N _(r) ^((i+1))(t)  (8)

where the credit C_(r) ^((i+1)) is the number of generated coded packetin relay r_(i+1) per new incoming coded packet and N_(r) ^((i+1))(t) isthe number of transmitted packets at time t. When the relay R_(i)transmits a coded packet, the helper H_(i+1) and the relay R₁₊₁ can bothincrease the number of DOFs. Therefore, the number of coded packets thatneeds to be transmitted from the R_(i+1) before the helper or the relayreceives a new coded packet is equal to:

C _(r) ^((i+1))=(1−e ₃ ^((i+1)) ·e ₁ ^((i+1)))⁻¹  (9)

The relay R_(i+1) generates a re-coded packet when the budget is higherthan one. The relay R_(i+1) transmits an ACK packet to the relay R_(i)when it has received g DOFs.

To be sure that there are always enough coded packets in thetransmission queue, the relay may generate additional coded packetsusing one of the strategies of the source. The relay may ceasetransmissions for the current generation and start generating packetsfor the next generation after receiving an ACK from the next relay.

Different policies for activating a helper node are possible. Two suchpolicies are described below. The calculation of credits and budget mayfollow the same ideas described above. A first policy may be referred toas the “wait for all degrees of freedom” (WFF) policy. Under thispolicy, the helper starts transmitting when it has accumulated all DOFs.By using the same analysis described above, the transmission budget forthe relay of Equation (8) may be used. Since the helper does not need tooverhear the coded packets after it starts transmitting, the budgetvalue does not increase by overhearing (i.e., it is fixed). By using thesame analysis from above, the transmission budget in the helper may becalculated as follows:

$\begin{matrix}{{B_{h} = \frac{g - {r \cdot \left( {1 - e_{3}^{({i + 1})}} \right)}}{2 - e_{3}^{({i + 1})} - e_{2}^{({i + 1})}}},} & (10)\end{matrix}$

where

$r = {\frac{g}{1 - e_{1}}.}$

The value of the budget in the helper will be decreased by one when acoded packet is generated until the budget reaches zero. Then, thehelper node will not generate any more packets.

A second policy may be referred to as the “wait for a fraction of theDOFs” (WFH) policy. Under this policy, the helper starts transmittingwhen the helper and the relay receive enough DOFs jointly to decode ageneration. Then, the source stops transmitting the coded packets. Usingthe same type of the analysis from above, the transmission budget forthe relay may be calculated using Equation (8). When the helper startstransmitting, the source will not transmit any coded packets. Therefore,the budget value will not increase by receiving a new coded packet.Thus, the budget may be calculated using Equation (10) above, where,r=g·(1−(e₁ ^((i+1))·e₃ ^((i+1))))⁻¹.

To verify the performance of the PlayNCool policy, the ns-3 simulatorwas used. The ns-3 simulator is an open source discrete event networksimulator intended to be used for research on computer networks. In thesimulation performed, a source node sends a UDP flow to a destinationnode using static routing protocol in the IP layer. Moreover, the IEEE802.11b wireless networking standard is used. In this implementation,for simplicity, a predefined helper was chosen between two relays.

As shown in FIG. 2, the PlayNCool layer was inserted between the MAClayer and the IP layer in the ns-3 protocol stack. The PlayNCool layerin the source receives uncoded packets from the IP layer and, aftercoding the packets, the PlayNCool layer delivers them to the MAC layer.When the relay receives the coded packets, it forwards them from the MAClayer to the IP layer. Once the IP layer finds the next hop for thecoded packets, it returns the coded packets to the PlayNCool layer. ThePlayNCool layer re-codes the packets and delivers them to the MAC layer.The IP layer of the helper does not need to find the next hop for theoverheard packets because it knows the sender and receiver from thepacket header. Thus, it should not forward the coded packets to the IPlayer. The PlayNCool layer overhears the coded packets from R_(i) and itre-codes and forwards them to R₁₊₁.

When the source node generates a coded packet, it adds an IP header 70and a PlayNCool header 72 to each coded packet, as shown in FIG. 5. TheIP header 70 cannot be coded because the IP layer needs the IP header tofind the next hop. Each relay uses the PlayNCool header 72 to re-codepackets of a generation. As shown in FIG. 5, the PlayNCool header 70 mayinclude: a generation size field 74 to indicate a size of the presentgeneration, a symbol size field 76 to indicate a size of each codedpacket, a coded flag to indicate whether the packet is coded or uncoded,a type field 80 to indicate the ACK packets, a generation number field82 to indicate the generation number of the packets, and a coefficientvector to carry the coefficients of the coded packets. It should beappreciated that the PlayNCool header format of FIG. 5 represents onepossible header format that was used for simulation purposes. It shouldbe appreciated that other header formats that include a differentcombination of fields and/or a different organization of fields may beused with PlayNCool. In order to code and decode the packets, the Kodolibrary was used (see, e.g., “KODO: An Open and Research OrientedNetwork Coding Library,” by Pedersen et al., Workshop on Network CodingApp. and Pro. (NC-Pro), Networking 2011, Spain, 2011). Kodo is a networkcoding library that is typically used for commercial software and forresearch.

In the simulation, the gain of the PlayNCool approach discussedpreviously was evaluated. Gain may be defined as the completion timewhen there is no helper node divided by the completion time of differenthelper policies. First, the simulation results of the PlayNCool approachwas compared with the other helper polices in the basic topology for asingle hop. This basic topology for three nodes includes a sender, ahelper, and a receiver, as shown in FIG. 3. The parameter x is definedas the number of neighboring nodes that generate extra load in thenetwork. In the simulation, g=50, e₂ ^((i+1))=0.6, e₃ ^((i+1))=0.8, andx=5%.

FIG. 6 is a plot illustrating the results of the simulation as afunction of e₁ ^((i+1)). The pot includes results for PlayNCool as wellas the WFH policy, and the WFF policy. As shown, the highest gain ofPlayNCool is close to 2.2. This means that the PlayNCool protocoltransmits 2.2 times faster than the approach without the helper. Thisgain is much higher than the gain of the other two policies. Even whene₁ ^((i+1)) becomes harsh and reaches 0.8, the plot shows that the gainis still close to 1.5 using PlayNCool.

The performance of the end-to-end transmission with different linkquality conditions is an interesting metric for wireless networks. Toestimate this metric, a wireless mesh network that includes a grid of 25nodes was defined, as shown in FIG. 7. With reference to the figure, asource node (S) transmits 12 generations to a destination node (D)through three relays (R₁, R₂, and R₃). The crosshatched nodes generateextra traffic in the network to increase the competition between nodesto access the channel. In this topology, g=50 and e₃ ^((i+1))=0.6 areused. FIG. 8 illustrates the results of the simulation. As shown, thegain is mostly determined by e₂ ^((i+1)) and reaches a maximum of 2.3.However, when e₂ ^((i+1))=0.6, the gain is close to 1.5 which is quitehigh considering the high losses on packets coming from the helper.

The competition between nodes to access the channel has a significanteffect on the gain. By increasing the load, the competition betweennodes increases. To study the effect of the load, the grid of FIG. 7 wasused. It was assumed that all of the nodes around the main flow weregenerating the load. FIG. 9 is a plot illustrating the effect of load ongain for the PlayNCool protocol. The plot of FIG. 9 corresponds to linkerror probabilities of e₁ ^((i+1))=0.4, e₂ ^((i+1))=0.4, and e₃^((i+1))=0.8. As shown, the gain of PlayNCool increases by increasingthe transmission rate and it reaches a maximum of about 4.4. The reasonPlayNCool has high gain is because the source and the helper are activeat the same time and this allows them to access the channel morefrequently and to increase the priority of the current flow for afraction of the total transmission time in PlayNCool. Given that thisreduces the total transmission time quite dramatically, this temporaryincrease of transmissions has a positive effect on the overall system.When the rate increases beyond a certain point, the gain of thePlayNCool protocol stabilizes because the MAC protocol divides thechannel between nodes equally and the channel is fully congested.

FIG. 10 is a plot illustrating the effect on gain of the e₂ ^((i+1))loss probability and the load for the PlayNCool protocol. As shown, whenthe load in the network is low, the gain will decrease when the errorprobability increases. Conversely, the effect of e₂ ^((i+1)) on gain isrelatively minor under high load because the collision rate is muchhigher than the loss rate and the gain is determined mostly by the loadin this case.

FIG. 11 is a block diagram illustrating an example node architecture 100that may be used in a node of a network that incorporates features ofthe present disclosure. As illustrated, the node architecture 100 mayinclude: one or more digital processors 102, a memory 104, a userinterface 106, a network encoder/recoder/decoder 108, a unicast routingcircuit 110, a wireless transceiver 112, helper activation circuitry114, and delay calculation circuitry 116. A bus 118 and/or otherstructure(s) may be provided for establishing interconnections betweenthe various components of device architecture 100. Digital processor(s)102 may include one or more digital processing circuits/devices that arecapable of executing programs or procedures to provide functions and/orservices for the corresponding node or user. Memory 104 may include oneor more digital data storage systems, devices, and/or components thatmay be used to store data and/or programs for other elements of the nodedevice architecture 100. User interface 106 may include any type ofdevices, components, or subsystems for providing an interface between auser and a corresponding node device. Wireless transceiver 112 mayinclude any type of transceiver that is capable of supporting wirelesscommunication with one or more remote wireless entities.

Network encoder/recoder/decoder 108 may include any type of device,circuit, and/or system for performing network encoding, re-coding,and/or decoding for a node device. In a source node device that willgenerate and transmit network coded packets, networkencoder/recoder/decoder 108 may include network encoding functionality(e.g., circuitry for implementing random linear network coding).Likewise, in a receiving device that will receive and decode networkcoded packets, network encoder/recoder/decoder 108 may include decodingfunctionality. In a node that may serve as both a source node and adestination node, both network encoding and decoding functionality maybe provided. In an intermediate node that will receive, store, andrecode packets, the network encoder/recoder/decoder 108 may includenetwork encoding, network decoding, and/or network recodingfunctionality.

Unicast routing circuitry 114 is operative for determining one or moreunicast routes through a wireless mesh network for a correspondingunicast session. The unicast routing circuitry 114 may use any of anumber of different routing algorithms or strategies, includingtraditional unicast routing schemes. In some embodiments, the unicastrouting circuitry 114 may be configured to determine multi-path routesthrough the network for one or more unicast sessions. Helper activationcircuitry 114 is operative for identifying and activating a helper nodein the wireless mesh network to provide assistance to a direct wirelesslink within a unicast route in the network. The helper activationcircuitry 114 may first identify one or more nodes in the network thatcan serve as helpers for a particular link (based on, e.g., location,frequency, available bandwidth, etc.). The helper activation circuitry114 may then send a request to the identified node(s) requestingassistance. A node that accepts a request may then serve as the helpernode for the corresponding link. The helper activation circuitry 114within a node will typically activate a helper for a wireless linkbetween the node itself and one or more other nodes. The requested nodemay or may not have the option of turning down the request to serve as ahelper. In some embodiments, the helper activation circuitry 114 mayonly ask for help for a particular link in certain circumstances (e.g.,the link is of low quality, etc.). As described previously, in someembodiments, helper nodes may be capable of self activation based on,for example, channel conditions in the network or some other conditionor occurrence.

Delay calculation circuitry 116 is operative for determining a delayindication for use by a helper node in the network. The delay indicationmay indicate an amount of time that a helper node will have to waitbefore it can begin transmitting re-coded packets in the network. Asdescribed previously, by having a helper node wait for a particularperiod of time before transmitting, performance can be increased in thenetwork. If allowed to transmit too soon, for example, the receiver nodemay receive, at least initially, linearly dependent (i.e.,non-innovative) coded packets. If allowed to transmit too late, thereceiver node may have already received most of the DOFs from thetransmitting node and the usefulness of the helper node is limited. Adelay may be calculated that is somewhere between these extremes. Insome embodiments, network channel information is used to determine thedelay value. The channel information may be generated by, for example,the routing algorithm that is used in the network. In some embodiments,the delay indication may be stated as the number (p) of transmittedcoded packets of a transmitting node that have to be overheard by ahelper node before the helper can transmit. As will be appreciated,other formats for indicating a delay amount may alternatively be used.

Although not shown in FIG. 11, in some embodiments, a node may includecircuitry for estimating a total number of coded packets that will haveto be transmitted by both a transmitting node and a helper node for eachgeneration. This number may then be used to determine how many codedpackets the transmitting node will have to initially generate and storein the buffer. It will also determine the number of re-coded packetsthat the helper node will have to transmit and generate.

Although illustrated as separate units in FIG. 11, it should beappreciated that the functions of the network encoder/recoder/decoder108, the unicast routing unit 110, the helper activation circuitry 114,and/or the delay calculation circuitry 116 may be implemented, eitherpartially or fully, within another component or device of acorresponding node in some implementations (e.g., within processor(s)102 or similar circuitry of FIG. 11, etc.).

Digital processor(s) 102 may include, for example, one or more generalpurpose microprocessors, digital signals processors (DSPs), applicationspecific integrated circuits (ASICs), field programmable gate arrays(FPGAs), programmable logic arrays (PLAs), programmable logic devices(PLDs), reduced instruction set computers (RISCs), controllers,microcontrollers, multi-core processors, processor complexes, and/orother processing devices, circuits, or systems, including combinationsof the above. Digital processor(s) 102 may be used to, for example,execute an operating system for a corresponding node device. Digitalprocessor(s) 102 may also be used to, for example, execute one or moreapplication programs for a node device. In addition, digitalprocessor(s) 102 may be configured to implement, either partially orfully, one or more of the communications related processes or techniquesdescribed herein in some implementations.

As described above, the wireless transceiver 112 may include any type oftransceiver that is capable of supporting wireless communication withone or more remote wireless entities. In various implementations, thewireless transceiver 112 may be configured in accordance with one ormore wireless networking standards and/or wireless cellular standards.In some implementations, multiple wireless transceivers may be providedto support operation in different networks or systems in a surroundingenvironment or with different wireless networking and/or cellularstandards. Wireless transceiver 112 may, in some implementations, becapable of communicating with peer devices in a peer-to-peer, ad-hoc, orwireless mesh network arrangement. In addition, in some implementations,wireless transceiver 112 may be capable of communicating with a basestation or access point of an infrastructure-type wireless communicationsystem or network. As illustrated in FIG. 11, wireless transceiver 112may be coupled to one or more antennas 90 and/or other transducers tofacilitate the transmission and/or reception of communication signals.In some implementations, wireless transceiver 112 may be used toimplement, either partially or fully, one or more of the communicationsrelated processes or techniques described herein. It should beappreciated that the techniques described in the present disclosure may,in some implementations, be implemented in wired communications networksor other networks or systems that do not use wireless communication. Insome of these implementations, wireless transceiver 112 may be replacedwith or supplemented by, for example, a wired communication device,component, card, or other structure.

Memory 104 may include any type of system, device, or component, orcombination thereof, that is capable of storing digital information(e.g., digital data, computer executable instructions and/or programs,etc.) for access by a processing device and/or other component. This mayinclude, for example, semiconductor memories, magnetic data storagedevices, disc based storage devices, optical storage devices, read onlymemories (ROMs), random access memories (RAMs), non-volatile memories,flash memories, USB drives, compact disc read only memories (CD-ROMs),DVDs, Blu-Ray disks, magneto-optical disks, erasable programmable ROMs(EPROMs), electrically erasable programmable ROMs (EEPROMs), magnetic oroptical cards, and/or other digital storage suitable for storingelectronic instructions and/or data.

It should be appreciated that the node architecture 100 of FIG. 11represents one possible example of a node architecture that may be usedin an implementation. Other architectures may alternatively be used. Asused herein, the term “node device” or “node” is used to describe anytype of digital electronic device, system, or structure that includessome form of communication capability (wireless and/or wired) and maybecome part of a network. This may include, for example, a laptop,desktop, notebook, or tablet computer; a personal digital assistant(PDA); a personal communication service (PCS) device; a personalnavigation assistant (PNA); a cellular telephone, smart phone, or otherwireless communication device; a pager; a wireless sensor device; asatellite communication device; a media player having communicationcapability; a digital storage device with communication capability, awireless base station, a wireless access point, a subscriber station, awireless transceiver device, an integrated circuit, a network server,and/or other devices and systems. It should be appreciated that all orpart of the various devices, processes, or methods described herein maybe implemented using any combination of hardware, firmware, and/orsoftware.

FIGS. 12A and 12B are portions of a flow diagram illustrating a process130 for use in transferring data from a source node to a destinationnode in a wireless mesh network in accordance with an embodiment.

The rectangular elements (typified by element 132 in FIG. 12A) areherein denoted “processing blocks” and may represent computer softwareinstructions or groups of instructions. It should be noted that the flowdiagram of FIGS. 12A and 12B represents one exemplary embodiment of adesign provided herein and variations in such a diagram, which generallyfollow the process outlined, are considered to be within the scope ofthe concepts, systems, techniques, circuits, and protocols described andclaimed herein.

Alternatively, the processing blocks may represent operations performedby functionally equivalent circuits such as a digital signal processorcircuit, an application specific integrated circuit (ASIC), or a fieldprogrammable gate array (FPGA). The flow diagram does not depict thesyntax of any particular programming language. Rather, the flow diagramillustrates the functional information one of ordinary skill in the artrequires to fabricate circuits and/or to generate computer software toperform the processing required of a particular apparatus or method. Itshould be noted that many routine program elements, such asinitialization of loops and variables and the use of temporary variablesare not shown. It will be appreciated by those of ordinary skill in theart that unless otherwise indicated herein, the particular sequencedescribed is illustrative only and can be varied without departing fromthe spirit of the concepts described and/or claimed herein. Thus, unlessotherwise stated, the processes described below are unordered meaningthat, when possible, the actions shown in FIGS. 12A and 12B can beperformed in any convenient or desirable order.

Referring now to FIG. 12A, data is first acquired at a source node of awireless mesh network that needs to be transmitted to a destination nodeof the network (block 132). The acquired data may include, for example,a data file that needs to be delivered to a remote user. It should beappreciated that the data does not all have to be acquired at the sametime. That is, in some embodiments, the data may be acquired over aperiod of time. A unicast route through the network from the source nodeto the destination node may then be determined (block 134). The routewill typically include the source node, one or more relay nodes, and thedestination node. Any routing technique or algorithm may be used todetermine the unicast route (e.g., B.A.T.M.A.N., AODV, OLSR, DCR, etc.).For a link between the source node and a first relay node in the route,a helper node in the vicinity of the source node may be activated toassist the link (block 136). In some implementations, the helper nodemay be activated by direct request from the source node to the helpernode. In other implementations, a helper node may decide automaticallythat it is to act as a helper for the link. In some implementations, ahelper node will only be activated in response to a predeterminedcondition. For example, in some cases, a helper node may be activatedfor a link only if the quality of the link is below a certain thresholdlevel. Thus, the source node may check available channel qualityinformation (e.g., information generated by the routing algorithm, etc.)to determine whether to request a helper. Alternatively, a node that isclose to the link may check channel quality information for the link todetermine whether it should automatically act as a helper for the link.In some implementations, a helper node will always be activated, ifavailable. At some point, the source node will divide the acquired datainto groups based on the generation size (block 138). This may beperformed all at the same time or the data may be divided intogenerations over a period of time (e.g., as it is acquired).

After a helper node has been activated, a delay value may be calculatedto identify a time after which the helper node will begin transmittingre-coded packets to the first relay node (block 138). In at least oneimplementation, the delay value may be calculated as the number ofpackets (p) that the helper node must overhear from the source node (forthe present generation) before it begins to transmit re-coded packets.Other techniques for defining the delay value may be used in otherimplementations (e.g., a predetermined time period may be specified insome implementations and a timer may be used to keep track of elapsedtime, etc.). The delay value may be calculated based on, for example,known channel conditions in the network and/or active neighbor nodes orusers in the network. Other criteria for calculating the delay value mayalso be considered (e.g., generation size, etc.). In at least oneembodiment, a mean flow analysis may be used to determine a value of pusing channel error probabilities. It should be appreciated that thehelper node may begin to transmit re-coded packets after the delayperiod, but it does not necessarily transmit packets continuously afterthis point in time. That is, there may be one or more periods ofnon-transmission interspersed with periods of packet transmission afterthe helper begins to transmit.

The source node may then generate coded packets for a first generationand store the coded packets in a buffer (block 142). In someembodiments, coded packets will not be generated for a particulargeneration until all source data has been acquired for the generation.In other embodiments, coded packets may begin to be generated in thesource node for a particular generation before all source data has beenassembled for that generation. Before generating the coded packets forthe first generation, the source node may estimate the number of thecoded packets that it has to transmit directly to the first relay node.This estimation may be made based, at least in part, on channelconditions in the network. In at least one embodiment, Equation 4discussed above may be used to calculate the number of coded packets. Inat least one embodiment, the coded packets will be RLNC packets. Aftergeneration, the coded packets may be stored within a buffer in the MAClayer.

Turning now to FIG. 12B, the source node begins to transmit the codedpackets associated with the first generation to the first relay node(block 144). In some embodiments, the source node may begin to transmitcoded packets for the first generation before all packets have beenaccumulated for the generation. That is, it is not necessary for all ofthe packets associated with the first generation to be assembled beforetransmission begins. The helper node overhears the coded packetstransmitted by the source node and stores the overheard packets in alocal buffer (block 146). After the delay determined above, the helpernode begins to transmit re-coded packets based on the stored overheardpackets (block 148). The source node and the helper node may thencontinue to transmit coded packets until one or more predeterminedconditions are satisfied (block 150). For example, the first relay nodemay be configured to transmit an ACK message when a sufficient number ofDOFs have been received to decode the original data packets of thecurrent generation. The source node and the helper node may beconfigured to cease transmitting coded packets for the currentgeneration in response to the ACK packet. In some embodiments, thehelper node will be instructed to only transmit a certain number ofcoded packets (k) for the current generation. Thus, the helper node maycease transmitting packets for the current generation after this numberof coded packets have been transmitted.

In some embodiments, the source node may also have a specified number ofcoded packets to transmit to the first relay node for the currentgeneration. In some embodiments, the source node may cease to transmitcoded packets for the current generation after this number has beenreached. In other embodiments, as described previously, the source nodemay be configured to continue to generate and transmit coded packets forthe current generation until an ACK is received from the first relaynode. In one approach, for example, the source node will generate andbuffer additional coded packets for the current generation when thenumber of coded packets presently in the buffer reaches a predeterminednumber without having received an ACK packet. In another approach, thesource node may generate and buffer additional coded packets for thecurrent generation if a predetermined time period has elapsed withoutreceiving am ACK packet. Other strategies for ensuring a sufficientnumber of DOFs are received by the first relay node may alternatively beused.

As described above in connection with block 148, the helper node willbegin to transmit re-coded packets after the predetermined delay (e.g.,after p coded packets have been overheard from the source node). In someimplementations, the helper node will not generate all of the re-codedpackets that it will transmit at the same time. Instead, a mechanism maybe provided by which the helper node can spread out the generation ofre-coded packets. In at least one embodiment, as described previously, a“budget” metric will be defined that can be used by the helper node tocontrol the generation and transmission of re-coded packets. A similarmetric may be used by the relay nodes within the route through thenetwork to control the generation of re-coded packets.

Eventually, a sufficient number of DOFs will have been received by thefirst relay node. At this point, the source node and the helper node canbegin to start processing the next generation. A similar process to thatdescribed above may then be used for the first generation within thenext link in the established route. The process may then be repeated forall links and all generations until all of the original data has beensuccessfully transferred to the destination node (block 152). Asdescribed previously, in some embodiments, two or more helper nodes maybe activated to assist a single link in a unicast route. Also asecondary helper assisting a particular link may be configured tooverhear and store packet transmissions of the primary helper in somesystems.

In some embodiments, aspects and/or features described herein areimplemented, at least in part, as computer instructions and/or datastructures stored on a non-transitory machine-readable (e.g., computerreadable) medium or media. Any type of non-transitory machine-readablemedium may be used including, for example, floppy diskettes, hard disks,optical disks, compact disc read only memories (CD-ROMs),magneto-optical disks, read only memories (ROMs), random access memories(RAMs), erasable programmable ROMs (EPROMs), electrically erasableprogrammable ROMs (EEPROMs), magnetic or optical cards, flash memory,and/or other types of non-transitory media suitable for storingelectronic instructions and/or data. As used herein, the terms“non-transitory machine-readable media,” “non-transitorycomputer-readable media,” and the like are not intended to encompasstransitory signals per se (i.e., signals acting as a medium or media).However, these terms are not intended to exclude physical media such asvolatile memory or RAM, where the data or instructions stored thereon isonly temporarily stored, or stored in “transitory” fashion.

Having described exemplary embodiments of the invention, it will nowbecome apparent to one of ordinary skill in the art that otherembodiments incorporating their concepts may also be used. Theembodiments contained herein should not be limited to disclosedembodiments but rather should be limited only by the spirit and scope ofthe appended claims. All publications and references cited herein areexpressly incorporated herein by reference in their entirety.

1. A machine implemented method for use in a wireless mesh network, themethod comprising: acquiring data packets at a source node that need tobe delivered to a remote destination node through the wireless meshnetwork; determining a unicast route through the wireless mesh networkfrom the source node to the destination node to support a data flow forthe acquired data packets; for a link between the source node and afirst relay node in the unicast route, automatically activating, basedon channel conditions within the network, a helper node to assist thelink in transferring data from the source node to the first relay node;generating random linear network coded (RLNC) packets at the source nodefor a first generation of the data flow; initiating transmission of RLNCpackets from the source node to the first relay node for the firstgeneration; overhearing and storing RLNC packets transmitted by thesource node for the first generation at the helper node; re-codingoverheard RLNC packets at the helper node for the first generation;after a delay, initiating transmission of re-coded RLNC packets from thehelper node to the first relay node for the first generation of the dataflow; and continuing to transmit RLNC packets from at least one of thesource node and the helper node until the first relay node has receiveda sufficient number of degrees-of-freedom (DOFs) to decode the firstgeneration of data packets.
 2. The method of claim 1, furthercomprising: repeating generating, initiating transmission of RLNCpackets, overhearing and storing, re-coding, initiating transmission ofre-coded RLNC packets, and continuing for each subsequent generation ofpackets after the first generation.
 3. The method of claim 1, furthercomprising: for a second link between the first relay node and a secondrelay node in the unicast route, activating a second helper node toassist the second link in transferring data from the first relay node tothe second relay node; generating re-coded RLNC packets at the firstrelay node for the first generation; initiating transmission of re-codedRLNC packets from the first relay node to the second relay node for thefirst generation; overhearing and storing RLNC packets transmitted bythe first relay node for the first generation at the second helper node;re-coding overheard RLNC packets at the second helper node for the firstgeneration; after a second delay, initiating transmission of re-codedRLNC packets from the second helper node to the second relay node forthe first generation; and continuing to transmit RLNC packets from atleast one of the first relay node and the second helper node until thesecond relay node has received a sufficient number of degrees-of-freedom(DOFs) to decode the first generation of data packets.
 4. The method ofclaim 3, wherein: generating re-coded RLNC packets at the first relaynode for the first generation includes using a variable parameter tocontrol timing of re-coding operations in the first relay node.
 5. Themethod of claim 1, further comprising: calculating the delay of thehelper node based, at least in part, on channel conditions in thewireless mesh network or other active users or nodes in the wirelessmesh network.
 6. The method of claim 5, wherein: the delay of the helpernode is expressed as a number of RLNC packets that the helper node hasto overhear from the source node before initiating transmission ofre-coded RLNC packets.
 7. The method of claim 1, further comprising:estimating, at the source node, a number of RLNC packets that will needto be transmitted from the source node for the first generation, whereingenerating RLNC packets includes generating the estimated number ofpackets.
 8. The method of claim 1, further comprising: estimating anumber of re-coded packets that will be transmitted from the helper nodefor the first generation.
 9. The method of claim 1, further comprising:transmitting an ACK message from the first relay node after the firstrelay node has received a sufficient number of degrees-of-freedom (DOFs)to decode the first generation of data packets, wherein at least one ofthe source node and the helper node will cease to transmit RLNC packetsfor the first generation in response to the ACK message.
 10. The methodof claim 1, wherein: re-coding overheard RLNC packets at the helper nodefor the first generation includes using a variable parameter to controltiming of re-coding operations in the helper node.
 11. The method ofclaim 1, further comprising: at a helper node associated with one linkin the unicast route, overhearing and storing packets transmitted by ahelper node associated with another, different link in the unicastroute.
 12. A machine implemented method for use in a wireless meshnetwork, the method comprising: acquiring a group of data packets at afirst wireless node for transmission to a second wireless node via adirect wireless link; automatically activating, based on channelconditions within the network, a helper node to assist in transmissionof data from the first wireless node to the second wireless node;generating random linear network coded (RLNC) packets at the firstwireless node by linearly combining the group of data packets;initiating transmission of the RLNC packets from the first wireless nodeto the second wireless node through the direct wireless link;overhearing and storing RLNC packets transmitted by the first wirelessnode at the helper node; re-coding RLNC packets stored within the helpernode to generate re-coded RLNC packets; after a delay, initiatingtransmission of re-coded RLNC packets from the helper node to the secondwireless node; and continuing to transmit RLNC packets from at least oneof the first wireless node and the helper node until the second wirelessnode has received a sufficient number of degrees-of-freedom (DOFs) todecode the group of data packets.
 13. The method of claim 12, wherein:activating a helper node includes activating the helper nodeautomatically from the helper node based on channel conditions withinthe network.
 14. The method of claim 12, wherein: automaticallyactivating a helper node includes determining at the first wireless nodethat a helper node is needed and sending a request to another node inthe wireless mesh network requesting that the other node serve as ahelper node for the link between the first wireless node and the secondwireless node.
 15. The method of claim 12, further comprising:calculating the delay of the helper node based, at least in part, onchannel conditions in the wireless mesh network and/or other activenodes or users in the wireless mesh network.
 16. The method of claim 15,wherein: calculating the delay of the helper node is performed at eitherthe first wireless node or the helper node.
 17. The method of claim 15,wherein: the delay of the helper node is expressed as a number of RLNCpackets that the helper node has to overhear from the source node beforetransmission of re-coded RLNC packets is initiated.
 18. The method ofclaim 12, further comprising: transmitting an ACK message from thesecond wireless node after the second wireless node has received asufficient number of degrees-of-freedom (DOFs) to decode the group ofdata packets, wherein at least one of the first wireless node and thehelper node will cease to transmit RLNC packets associated with thegroup of data packets in response to the ACK message.
 19. The method ofclaim 12, wherein: activating a helper node to assist in transmission ofdata from the first wireless node to the second wireless node includesactivating a first helper node; and the method further comprisesactivating at least one additional helper node to assist in transmissionof data from the first wireless node to the second wireless node. 20.The method of claim 19, wherein: the at least one additional helper nodeincludes a secondary helper node that is configured to overhear andstore RLNC packets transmitted by the first helper node.
 21. The methodof claim 12, wherein: the group of data packets is representative of asingle generation of a unicast data transfer between a source node and adestination node via a route that includes the first and second wirelessnodes.
 22. The method of claim 12, wherein: the group of data packetsincludes RLNC packets; and generating RLNC packets at the first wirelessnode includes re-coding RLNC packets in the group of data packets.
 23. Amachine implemented method for use in a wireless mesh network, themethod comprising: acquiring a group of data packets at a first wirelessnode for transmission to a second wireless node via a direct wirelesslink; automatically activating, based on channel conditions within thenetwork, a helper node in a vicinity of the first wireless node toassist in transmission of data from the first wireless node to thesecond wireless node by sending a request message from the firstwireless node; generating random linear network coded (RLNC) packets atthe first wireless node by linearly combining the group of data packets;initiating transmission of the RLNC packets from the first wireless nodeto the second wireless node; calculating a delay indication for thehelper node that sets a delay that the helper node will have to waitbefore transmitting re-coded versions of RLNC packets overheard from thefirst wireless node, wherein the delay indication is calculated based,at least in part, on channel conditions in the network; and transmittingthe delay indication to the helper node.
 24. The method of claim 23,further comprising: estimating, at the first wireless node, a number ofRLNC packets that will be transmitted from the source node for the groupof data packets, wherein the number of RLNC packets is estimated based,at least in part, on channel conditions in the network.
 25. The methodof claim 23, further comprising: estimating, at the first wireless node,a number of re-coded packets that will be transmitted from the helpernode for the group of data packets, wherein the number of re-codedpackets is estimated based, at least in part, on channel conditions inthe network.
 26. A wireless node device comprising: a wirelesstransceiver to support wireless communication with one or more othernodes in a wireless mesh network; helper node circuitry to determinewhether the wireless node device is to serve as a helper node for adirect wireless link between a transmitting node and a receiving node inthe network, wherein the transmitting node and the receiving node areboth part of a common unicast route in the network; monitoring circuitryto overhear and store network coded packets transmitted by thetransmitting node if the wireless node device is acting as the helpernode; re-coding circuitry to re-code the stored network coded packets ifthe wireless node is acting as the helper node; and delay circuitry toinitiate transmission of the re-coded packets a finite amount of timeafter a first network coded packet is overheard by the monitoringcircuitry if the wireless node is acting as the helper node.
 27. Thewireless node device of claim 26, wherein: the finite amount of time isbased, at least in part, on channel conditions in the network and/oractive neighbor nodes in the network.
 28. The wireless node device ofclaim 26, wherein: the delay circuitry is configured to initiatetransmission of re-coded packets after p network coded packets have beenoverheard by the monitoring circuitry, wherein p is based, at least inpart, upon channel conditions in the network and/or active neighbornodes in the network.
 29. The wireless node device of claim 26, wherein:the helper node circuitry is configured to receive and respond to arequest from the transmitting node to serve as a helper node.
 30. Thewireless node device of claim 26, wherein: the helper node circuitry isconfigured to monitor channel conditions in a vicinity of the wirelessnode device and autonomously determine whether to serve as a helper nodefor a nearby wireless link.